package utils

import (
	"github.com/nacos-group/nacos-sdk-go/v2/vo"
	"go.uber.org/zap"
	"gopkg.in/yaml.v2"
	//使用了beego框架的配置文件读取模块
)

func InitLogger() {
	logger, _ := zap.NewDevelopment()
	zap.ReplaceGlobals(logger)
}

func init() {
	RegisterEnv()
	InitLogger()
	InitConfig(GlobalEnv.Nacos.Config_data_id, GlobalEnv.Nacos.Config_group)
	zap.S().Debug("测试匹配信息", GlobalEnv)

}

func InitConfig(DataId string, Group string) {

	//配置中心使用nacos yaml 模式
	content, err := GetNacosConfigClient().GetConfig(vo.ConfigParam{
		//DataId my_test_conf
		DataId: DataId,
		//Group DEFAULT_GROUP
		Group: Group},
	)
	if err != nil {
		zap.S().Debug("参数匹配失败", err)
	}
	err = MapTo(content)
	if err != nil {
		zap.S().Debug("yaml解析配置文件出错", err)
	}
	// 动态监听
	err = GetNacosConfigClient().ListenConfig(vo.ConfigParam{
		DataId: DataId,
		Group:  Group,
		OnChange: func(namespace, group, dataId, data string) {
			err = MapTo(data)
			if err != nil {
				zap.S().Debug("监听配置出错", err)
			}
		},
	})
	if err != nil {
		zap.S().Debug("动态监听配置文件出错", err)
	}
}
func MapTo(content string) (err error) {
	err = yaml.Unmarshal([]byte(content), &GlobalConf)
	return
}
